perm filename XFORMS[PAT,LMM] blob sn#092635 filedate 1974-03-16 generic text, type T, neo UTF8
(FILECREATED "16-MAR-74  5:12:38" XFORMS.LISP/360)


(DEFINEQ

(@1
  (LAMBDA (X M)
    (COND
      ((OR (NULL X)
           (NUMBERP X)
           (STRINGP X)
           (EQ X T))
        X)
      ((SETQ M (@2 X M))
        M)
      (T (LIST (QUOTE QUOTE)
               X)))))

(@2
  (LAMBDA (X N)
    (COND
      ((ATOM X)
        NIL)
      ((EQ (CAR X)
           (QUOTE ≠))
        (COND
          ((ATOM (CDR X))
            (CDR X))
          ((NULL (CDDR X))
            (LIST (QUOTE LIST)
                  (CADR X)))
          (T ((LAMBDA (D E)
                 (COND
                   ((EQ (CAR D)
                        (QUOTE LIST))
                     (CONS (QUOTE LIST)
                           (CONS E (CDR D))))
                   (T (LIST (QUOTE CONS)
                            E D))))
               (@1 (CDDR X))
               (CADR X)))))
      ((NULL (CDR X))
        (COND
          ((SETQ N (@2 (CAR X)
                       N))
            (LIST (QUOTE LIST)
                  N))
          (T NIL)))
      (T (PROG (M)
               (SETQ M (@2 (CAR X)
                           N))
               (SETQ N (@2 (CDR X)
                           N))
               (COND
                 ((AND (NULL M)
                       (NULL N))
                   (RETURN NIL)))
               (COND
                 ((AND (NULL M)
                       (SETQ M (CAR X))
                       (NOT (NUMBERP M))
                       (NOT (EQ M T))
                       (NOT (STRINGP M)))
                   (SETQ M (LIST (QUOTE QUOTE)
                                 M))))
               (RETURN (COND
                         ((EQ (CAR N)
                              (QUOTE LIST))
                           (CONS (CAR N)
                                 (CONS M (CDR N))))
                         (T (LIST (QUOTE CONS)
                                  M
                                  (COND
                                    ((AND (NULL N)
                                          (SETQ N (CDR X))
                                          (NOT (NUMBERP N))
                                          (NOT (EQ N T)))
                                      (LIST (QUOTE QUOTE)
                                            N))
                                    (T N)))))))))))

(INTEXP
  (LAMBDA (Z)
    (OR INTEGERFLAG (FIXP Z)
        (FMEMB (VALUETYPE Z)
               (QUOTE (S I))))))

(VALUECONTEXT
  (LAMBDA (TYPE)

          (* RETURNS NIL IF THE VALUE OF THE CURRENT 
          EXPRESSION (##) IS NOT USED , OR IF TYPE ISN'T NIL 
          AND THE VALUE OF THE EXPRESSION IS USED ONLY FOR A 
          PREDICATE)


    (PROG ((CUREXP (##))
           (PARENT (## !0))
           (TWOPARENT (## !0 !0))
           (TAIL (## UP)))
          (RETURN (NOT (SELECTQ (CAR PARENT)
                                ((PROG PROGN)
                                  (CDR TAIL))
                                (PROG1 (NEQ TAIL (CDR PARENT)))
                                ((AND OR)
                                  (IF (CDR TAIL)
                                      THEN TYPE
                                    ELSE (GO RECUR)))
                                (LAMBDA NIL)
                                ((NOT NULL)
                                  TYPE)
                                (COND
                                  ((EQ (CAR TWOPARENT)
                                       (QUOTE COND))
                                    (OR (AND (CDR TAIL)
                                             (COND
                                               ((EQ TAIL PARENT)
                                                 TYPE)
                                               (T T)))
                                        (GO TWORECUR)))
                                  (T (HELP))))))
      TWORECUR
          (RETURN (PROG (FLG)
                        (## !0 !0 (E (SETQ FLG (VALUECONTEXT TYPE))
                                     T))
                        (RETURN FLG)))
      RECUR
          (RETURN (PROG (FLG)
                        (## !0 (E (SETQ FLG (VALUECONTEXT TYPE))
                                  T))
                        (RETURN FLG))))))

(SMALLEXP
  (LAMBDA (X)
    (OR (SMALLP X)
        SMALLINTEGERFLAG
        (EQ (VALUETYPE X)
            (QUOTE S)))))

(NUMBEREXP
  (LAMBDA (X)
    (OR (NUMBERP X)
        (FMEMB (VALUETYPE X)
               (QUOTE (S I F N))))))

(ATOMEXPRESSION
  (LAMBDA (X)
    (AND (EQ (CAR X)
             (QUOTE QUOTE))
         (NLISTP (CADR X)))))
)
  (LISPXPRINT (QUOTE XFORMSFNS)
              T)
  (RPAQQ XFORMSFNS (@1 @2 INTEXP VALUECONTEXT SMALLEXP NUMBEREXP 
                       ATOMEXPRESSION))
  (LISPXPRINT (QUOTE XFORMSVARS)
              T)
  (RPAQQ XFORMSVARS
         ((FNS @1 @2 INTEXP SMALLEXP NUMBEREXP ATOMEXP VALUECONTEXT 
               TORNIL VALUETYPE)
          (PROP VALUETYPE * VALUETYPELST)
          (VARS (#RPARS))
          (TRANSAVE)
          (USERMACROS LAZY REM REMFIX NO EXPANDMACS)
          (P (OR (GETD (QUOTE TRANSOR))
                 (LOAD (OR (INFILEP (QUOTE <NEWLISP>TRANSOR.COM))
                           (INFILEP (QUOTE <LISP>TRANSOR.COM))))))
          (ADVISE UREAD TRANSOR HELP-IN-TRANSITBLOCK)))
(DEFINEQ

(@1
  (LAMBDA (X M)
    (COND
      ((OR (NULL X)
           (NUMBERP X)
           (STRINGP X)
           (EQ X T))
        X)
      ((SETQ M (@2 X M))
        M)
      (T (LIST (QUOTE QUOTE)
               X)))))

(@2
  (LAMBDA (X N)
    (COND
      ((ATOM X)
        NIL)
      ((EQ (CAR X)
           (QUOTE ≠))
        (COND
          ((ATOM (CDR X))
            (CDR X))
          ((NULL (CDDR X))
            (LIST (QUOTE LIST)
                  (CADR X)))
          (T ((LAMBDA (D E)
                 (COND
                   ((EQ (CAR D)
                        (QUOTE LIST))
                     (CONS (QUOTE LIST)
                           (CONS E (CDR D))))
                   (T (LIST (QUOTE CONS)
                            E D))))
               (@1 (CDDR X))
               (CADR X)))))
      ((NULL (CDR X))
        (COND
          ((SETQ N (@2 (CAR X)
                       N))
            (LIST (QUOTE LIST)
                  N))
          (T NIL)))
      (T (PROG (M)
               (SETQ M (@2 (CAR X)
                           N))
               (SETQ N (@2 (CDR X)
                           N))
               (COND
                 ((AND (NULL M)
                       (NULL N))
                   (RETURN NIL)))
               (COND
                 ((AND (NULL M)
                       (SETQ M (CAR X))
                       (NOT (NUMBERP M))
                       (NOT (EQ M T))
                       (NOT (STRINGP M)))
                   (SETQ M (LIST (QUOTE QUOTE)
                                 M))))
               (RETURN (COND
                         ((EQ (CAR N)
                              (QUOTE LIST))
                           (CONS (CAR N)
                                 (CONS M (CDR N))))
                         (T (LIST (QUOTE CONS)
                                  M
                                  (COND
                                    ((AND (NULL N)
                                          (SETQ N (CDR X))
                                          (NOT (NUMBERP N))
                                          (NOT (EQ N T)))
                                      (LIST (QUOTE QUOTE)
                                            N))
                                    (T N)))))))))))

(INTEXP
  (LAMBDA (Z)
    (OR INTEGERFLAG (FIXP Z)
        (FMEMB (VALUETYPE Z)
               (QUOTE (S I))))))

(SMALLEXP
  (LAMBDA (X)
    (OR (SMALLP X)
        SMALLINTEGERFLAG
        (EQ (VALUETYPE X)
            (QUOTE S)))))

(NUMBEREXP
  (LAMBDA (X)
    (OR (NUMBERP X)
        (FMEMB (VALUETYPE X)
               (QUOTE (S I F N))))))

(ATOMEXP
  (LAMBDA (X)                                   (* CAN USE EQ ON THIS ?)
    (COND
      ((EQ (CAR X)
           (QUOTE QUOTE))
        (NLISTP (CADR X)))
      (T (FMEMB (VALUETYPE X)
                (QUOTE (S A T)))))))

(VALUECONTEXT
  (LAMBDA (TYPE)

          (* RETURNS NIL IF THE VALUE OF THE CURRENT 
          EXPRESSION (##) IS NOT USED , OR IF TYPE ISN'T NIL 
          AND THE VALUE OF THE EXPRESSION IS USED ONLY FOR A 
          PREDICATE)


    (PROG ((CUREXP (##))
           (PARENT (## !0))
           (TWOPARENT (## !0 !0))
           (TAIL (## UP)))
          (RETURN (NOT (SELECTQ (CAR PARENT)
                                ((PROG PROGN)
                                  (CDR TAIL))
                                (PROG1 (NEQ TAIL (CDR PARENT)))
                                ((AND OR)
                                  (IF (CDR TAIL)
                                      THEN TYPE
                                    ELSE (GO RECUR)))
                                (LAMBDA NIL)
                                ((NOT NULL)
                                  TYPE)
                                (COND
                                  ((EQ (CAR TWOPARENT)
                                       (QUOTE COND))
                                    (OR (AND (CDR TAIL)
                                             (COND
                                               ((EQ TAIL PARENT)
                                                 TYPE)
                                               (T T)))
                                        (GO TWORECUR)))
                                  (T (HELP))))))
      TWORECUR
          (RETURN (PROG (FLG)
                        (## !0 !0 (E (SETQ FLG (VALUECONTEXT TYPE))
                                     T))
                        (RETURN FLG)))
      RECUR
          (RETURN (PROG (FLG)
                        (## !0 (E (SETQ FLG (VALUECONTEXT TYPE))
                                  T))
                        (RETURN FLG))))))

(TORNIL
  (LAMBDA (X)
    (OR (NULL X)
        (EQ X T)
        (FMEMB (CAR (LISTP X))
               (QUOTE (NOT NULL AND OR ATOM EQ MEMQ MEMBER NUMBERP))))))

(VALUETYPE
  (LAMBDA (X)
    (COND
      ((LISTP X)
        (SETQ X (CAR X)))
      ((MEMB X (CAR FILESPECVARS)))
      (T (SETQ X)))
    (AND
      X
      (OR
        (GETP X (QUOTE VALUETYPE))
        (/PUT X (QUOTE VALUETYPE)
              (PROGN (PRIN1 X T)
                     (PROG1 (Y/N ((U . nknown)
                                  (S . mall% integer)
                                  (I . nteger)
                                  (F . loating-point)
                                  (N . umber)
                                  (A . tom)
                                  (T . /NIL)
                                  (O . ther))
                                 " value type?")
                            (/RPLACA (QUOTE VALUETYPELST)
                                     (CONS X
                                           (LISTP (CAR (QUOTE 
                                                       VALUETYPELST)))))
                            )))))))
)
  (RPAQQ VALUETYPELST
         (IPLUS BONDORDER TIMES MASS TYPE CDAR NAME IMIN DOTS MIN CAAR 
                LENGTH CDR CAR))
(DEFLIST(QUOTE(
  (IPLUS I)
  (BONDORDER S)
  (TIMES N)
  (MASS I)
  (TYPE A)
  (CDAR U)
  (NAME A)
  (IMIN I)
  (DOTS S)
  (MIN N)
  (CAAR U)
  (LENGTH S)
  (CDR U)
  (CAR U)
))(QUOTE VALUETYPE))

  (RPAQ #RPARS)
  (RPAQQ DUMPFILE XFORMS.LISP/360)
  (RPAQQ USERNOTES ((ALIST (* THE ALIST OPTION IN APPLY IS NOT 
                              IMPLEMENTED IN INTERLISP - THIS NEEDS TO 
                              BE RECODED))
          (APPLY/EVAL (* TRANSOR will translate the arguments of the 
                         APPLY or EVAL expression, but the user must 
                         make sure that the run-time evaluation of the 
                         arguments returns a BBN-compatible expression.)
                      )
          (ARRAYS (* Array function. No transformations for these 
                     functions have been composed yet.))
          (BLAMBDA1 (* LISTP CAR-OF-FORM: THERE IS SOMETHING WRONG HERE)
                    )
          (DEBUG: (* This didn't do anything in LISP 1.5!!!!))
          (EXPLODE: (* LISP 1.5 EXPLODE creates all characters
                       (i.e., (EXPLODE (QUOTE A123))
                              will result in a list OF 4 characters)
                       %. Interlisp makes the 1, 2 and 3 into numbers))
          (FEATURE (* This feature is not available in INTERLISP and 
                      must be recoded))
          (FILES (* Io functions differ on the 360 and the pdp-10. Only 
                    a weak attempt has been made to translate the code. 
                    The user needs to examine the code carefully and 
                    make sure that it is doing what is expected))
          (FIXIT (* YOU MUST FIX THIS NOW))
          (GENSYM1: (* GENSYM doesn't take an ARG here))
          (INTERN (* No direct match for INTERN exists on INTERLISP.))
          (LABEL (* The LABEL device is not implemented in INTERLISP.))
          (LAZY (* I did not really expect this fn to appear and will
                   (may)
                   write TRANSFORMATIONS for it if it does.))
          (LOGP: (* No logical numbers in INTERLISP))
          (MACHINE-CODE (* Expression dependent on machine-code. User 
                           must recode.))
          (MIN/MAX (* THE FUNCTIONS MAX AND MIN IS NOT DEFINED IN THE 
                      INTERLISP SYSTEM; YOU NEED TO DEFINE IT YOURSELF.)
                   )
          (MKATOM (* Creating atoms is handled differently - Collect a 
                     list and then call readlist on it, rather than 
                     USING RLIT, RNUMB and MKATOM - This expression 
                     hasn't been changed, but one could work up a 
                     transformation in terms OF some SPECIAL variable 
                     if required))
          (SPEC (* The function SPECIAL must be defined for the program 
                   to work))
          (UDF (* This function is not defined directly in INTERLISP))))
  (RPAQQ NLISTPCOMS NIL)
  (RPAQQ LAMBDACOMS ((IF (NEQ (CAAAR L)
                              (QUOTE LAMBDA))
                         ((REMFIX BLAMBDA1))
                         (MARK (ORR (1 (NTH 3)
                                       DOTHESE)
                                    ((REMFIX BLAMBDA1)))
                               ←←
                               (NTH 2)
                               DOTHESE))))
  (RPAQQ TRANSFORMATIONS (* *AND *MAX *MIN *OR *PLUS *SUBLIS *TIMES 
                            ADD1 AND APPEND1 APPLY APPREV ARRAY ASA 
                            ASSOC ATTRIB BPSCHKPT BPSLEFT BPSMOVE 
                            BPSRESTR BPSUSED BPSWIPE BPSZ BREAKP 
                            CHKPOINT CLEANUP CLOSE COMMENT COMMON 
                            COMPILE COMPRESS COND COUNT CR CSET CSETQ 
                            DEBUG DEFINE DEFINEF DEFLIST DIFFERENCE 
                            DIGP DIVIDE EJECT EQUAL EVAL EVCON EVENP 
                            EVLIS EXCISE EXITERR EXPLODE EXPLODE1 EXPT 
                            FIXB FIXDEFINE FLAG FLAGP FLOATB FOR 
                            FULLWORDP GENSYM1 GENSYM2 GEQ GET GETIME 
                            GREATERP GSET INLL INSERT INTERN LAP360 
                            LEFTSHIFT LENGTHEXPLODE LEQ LESSP LETP LITP 
                            LOGP MACEXP MACFEXP MACRO MACWEISS MAX 
                            MEMBER MEMQ MIN MINUS MKATOM NEQ NUMBERP 
                            OPEN OPTIMIZE OR ORDERP OTLL OVOFF OVON 
                            PAIR PAIRMAP PLANT PLANT1 PLANTDC PLANTSQ 
                            PLUS PRBUFFER PRINC PRINLAP PROG PROG2 
                            PUTPROP QUOTE QUOTIENT RDS READCH RECIP 
                            RELINK REMAINDER REMFLAG REMFLAGS REMOB 
                            REMPROP RESTORE RETIME RLIT RNUMB SASSOC 
                            SET SETQ SORT SPEAK SPECIAL STOREATOM 
                            STORECHAR STOREEVAL STORELIST SUB1 SUBLIS 
                            SUBST15 THOSE TIMES TIMETOT TRACE TTAB 
                            UNCOMMON UNMACRO UNSPECIAL UNTRACE VERBOS 
                            WRS XTAB ZEROP { }))
(DEFLIST(QUOTE(
  (* (LAZY))
  (*AND (LAZY))
  (*MAX (LAZY))
  (*MIN (LAZY))
  (*OR (LAZY))
  (*PLUS (LAZY))
  (*SUBLIS (LAZY))
  (*TIMES (LAZY))
  (ADD1 (2 DOTHIS 0 (IF (INTEXP (## 2))
                        NIL
                        ((1 PLUS 1)))))
  (AND ((IF (AND (VALUECONTEXT T)
                 (NOT (TORNIL (## -1))))
            ((N T))
            NIL)))
  (APPEND1 ((1 NCONC1)))
  (APPLY ((IF (## 4)
              ((REMARK ALIST))
              NIL)))
  (APPREV ((1 NCONC)
           2
           (MBD REVERSE)
           0))
  (ARRAY (LAZY))
  (ASA ((REMFIX FEATURE)))
  (ASSOC ((NTH 2)
          DOTHESE !0 (IF (ATOMEXP (## 2))
                         NIL
                         ((1 SASSOC)))
          (IF (## 4)
              ((IF (EQ (CAR (## 4)
                            (QUOTE LAMBDA)))
                   ((REMFIX FEATURE))
                   NIL)
               (MBD OR)
               (MOVE 2 4 TO N)
               2)
              ((4)))
          (MBD CDR)))
  (ATTRIB ((1 (LAMBDA (X Y)
                      (COND ((LISTP X)
                             (NCONC X Y))
                            (X (RPLACD X (NCONC X Y))))
                      Y))))
  (BPSCHKPT ((REMARK FEATURE)
             (-1 * FEATURE)))
  (BPSLEFT ((REMARK FEATURE)
            (-1 * FEATURE)))
  (BPSMOVE ((REMARK FEATURE)
            (-1 * FEATURE)))
  (BPSRESTR ((REMARK FEATURE)
             (-1 * FEATURE)))
  (BPSUSED ((REMARK FEATURE)
            (-1 * FEATURE)))
  (BPSWIPE ((REMARK FEATURE)
            (-1 * FEATURE)))
  (BPSZ ((REMARK FEATURE)
         (-1 * FEATURE)))
  (BREAKP (LAZY))
  (CHKPOINT (LAZY))
  (CLEANUP (LAZY))
  (CLOSE ((REMARK FILES)
          (1 CLOSEF)))
  (COMMENT ((1 *)
            NLAM))
  (COMMON ((1 SPECIAL)
           DOTHIS))
  (COMPILE ((DELETE)))
  (COMPRESS ((1 PACK)))
  (COND (1 (LPQ NX DOTHESE)))
  (COUNT (LAZY))
  (CR (LAZY))
  (CSET ((1 SET)
         (REMARK COMMON)))
  (CSETQ ((REMARK COMMON)
          (1 SETQ)))
  (DEBUG (LAZY))
  (DEFINE ((IF (EQ (## 2 1)
                   (QUOTE QUOTE))
               ((1 DEFINEQ)
                2
                (XTR 2)
                0
                (BO 2)
                (NTH 2)
                (LPQ MARK 1 2 (IF (NEQ (## 1)
                                       (QUOTE LAMBDA))
                                  LAZY NIL)
                     3 EXPANDMACS DOTHIS ←← (NTH 2)))
               LAZY)))
  (DEFINEF (LAZY))
  (DEFLIST (LAZY))
  (DIFFERENCE (2 UP DOTHESE !0 (IF (AND (INTEXP (## 2))
                                        (INTEXP (## 3)))
                                   ((1 IDIFFERENCE))
                                   NIL)))
  (DIGP (LAZY))
  (DIVIDE (LAZY))
  (EJECT ((: (PRIN1 (QUOTE "")))))
  (EQUAL ((NTH 2)
          DOTHESE !0 (IF (OR (AND (SMALLEXP (## 2))
                                  (SMALLEXP (## 3)))
                             (ATOMEXP (## 2))
                             (ATOMEXP (## 3)))
                         ((1 EQ))
                         ((IF (OR (NUMBEREXP (## 2))
                                  (NUMBEREXP (## 3)))
                              ((1 EQP))
                              NIL)))))
  (EVAL ((REMARK APPLY/EVAL)
         (IF (## 3)
             ((1 EVALA))
             (3))))
  (EVCON (LAZY))
  (EVENP ((1 IREMAINDER)
          (N 2)
          2 DOTHIS 0 (MBD ZEROP)))
  (EVLIS (LAZY))
  (EXCISE (LAZY))
  (EXITERR (LAZY))
  (EXPLODE ((REMARK EXPLODE:)
            (1 UNPACK)))
  (EXPLODE1 ((1 UNPACK)))
  (EXPT NIL)
  (FIXB ((1 FIX)))
  (FIXDEFINE (LAZY))
  (FLAG (LAZY))
  (FLAGP (LAZY))
  (FLOATB ((1 FLOAT)))
  (FOR (LAZY))
  (FULLWORDP (LAZY))
  (GENSYM1 ((REMARK GENSYM1:)
            (1 GENSYM)
            (2)))
  (GENSYM2 (LAZY))
  (GEQ ((1 LESSP)
        (MBD NOT)))
  (GET ((IF (ATOMEXP (## 2))
            ((1 GETP))
            (2 (MBD CDR)))))
  (GETIME ((1 RESULTS)))
  (GREATERP ((NTH 2)
             DOTHESE !0 (IF (AND (INTEXP (## 2))
                                 (INTEXP (## 3)))
                            ((1 IGREATERP))
                            NIL)))
  (GSET ((1 SET)))
  (INLL (REM))
  (INSERT ((REMARK LAZY)))
  (INTERN (LAZY))
  (LAP360 (LAZY))
  (LEFTSHIFT ((1 LSH)))
  (LENGTHEXPLODE ((1 NCHARS)))
  (LEQ ((1 GREATERP)
        (MBD NOT)))
  (LESSP ((NTH 2)
          DOTHESE !0 (IF (AND (INTEXP (## 2))
                              (INTEXP (## 3)))
                         ((1 ILESSP))
                         NIL)))
  (LETP (LAZY))
  (LITP (LAZY))
  (LOGP ((REMARK LOGP:)
         (1 FIXP)))
  (MACEXP (LAZY))
  (MACFEXP (LAZY))
  (MACRO (LAZY))
  (MACWEISS (LAZY))
  (MAX ((NTH 2)
        DOTHESE !0 (IF (AND (INTEXP (## 2))
                            (INTEXP (## 3)))
                       ((1 IMAX))
                       NIL)
        (REMARK MIN/MAX)))
  (MEMBER ((IF (ATOMEXP (## 2))
               ((1 MEMB))
               NIL)
           (IF (VALUECONTEXT T)
               ((MBD (AND * T)))
               NIL)))
  (MEMQ ((1 MEMB)
         (IF (VALUECONTEXT T)
             ((MBD (AND * T)))
             NIL)))
  (MIN ((NTH 2)
        DOTHESE !0 (IF (AND (INTEXP (## 2))
                            (INTEXP (## 3)))
                       ((1 IMIN))
                       NIL)
        (REMARK MIN/MAX)))
  (MINUS (2 DOTHIS 0 (IF (INTEXP (## 2))
                         ((1 IMINUS))
                         NIL)))
  (MKATOM (LAZY))
  (NEQ (LAZY))
  (NUMBERP ((IF (VALUECONTEXT T)
                ((MBD (AND * T)))
                NIL)))
  (OPEN ((REMARK FILES)
         (IF (EQUAL (## 4)
                    (QUOTE (QUOTE OUTPUT)))
             ((1 OUTFILE))
             ((IF (EQUAL (## 4)
                         (QUOTE (QUOTE INPUT)))
                  ((1 INFILE))
                  (LAZY))))
         (3)
         (3)))
  (OPTIMIZE (LAZY))
  (OR ((IF (AND (VALUECONTEXT T)
                (NOT (TORNIL (## -1))))
           ((MBD (AND * T))
            2
            (NTH 2)
            DOTHESE)
           NIL)))
  (ORDERP (LAZY))
  (OTLL ((1 LINELENGTH)
         (REMARK FILES)))
  (OVOFF (LAZY))
  (OVON (LAZY))
  (PAIR (LAZY))
  (PAIRMAP (LAZY))
  (PLANT ((REMARK LAZY)))
  (PLANT1 ((REMARK LAZY)))
  (PLANTDC ((REMARK LAZY)))
  (PLANTSQ ((REMARK LAZY)))
  (PLUS ((NTH 2)
         DOTHESE !0 (IF (EVERY (## (NTH 2))
                               (FUNCTION INTEXP))
                        ((1 IPLUS))
                        NIL)))
  (PRBUFFER (LAZY))
  (PRINC ((1 PRIN1)))
  (PRINLAP (LAZY))
  (PROG ((E (AND REMOVEFNAMEFLG (MEMB (QUOTE FNAME)
                                      (## 2))
                 (## (I 2 (REMOVE (QUOTE FNAME)
                                  (## 2)))
                     (ORR (F (SETQ FNAME --)
                             DELETE)
                          NIL)))
            T)
         (NTH 3)
         DOTHESE))
  (PROG2 ((1 PROGN)))
  (PUTPROP ((1 PUT)
            (SW 3 4)))
  (QUOTE (NLAM))
  (QUOTIENT ((NTH 2)
             DOTHESE !0 (IF (AND (INTEXP (## 2))
                                 (INTEXP (## 3)))
                            ((1 IQUOTIENT))
                            NIL)))
  (RDS ((REMARK FILES)
        (1 INPUT)))
  (READCH ((IF (## 2)
               (LAZY)
               NIL)
           (REMARK FILES)
           (1 READC)))
  (RECIP ((1 FQUOTIENT 1)))
  (RELINK (LAZY))
  (REMAINDER ((NTH 2)
              DOTHESE !0 (IF (AND (INTEXP (## 2))
                                  (INTEXP (## 3)))
                             ((1 IREMAINDER))
                             NIL)))
  (REMFLAG (LAZY))
  (REMFLAGS (LAZY))
  (REMOB (LAZY))
  (REMPROP ((IF (VALUECONTEXT)
                ((NTH 2)
                 DOTHESE !0 (MBD PROG1 NIL))
                NIL)))
  (RESTORE (REM))
  (RETIME (LAZY))
  (RLIT (LAZY))
  (RNUMB (LAZY))
  (SASSOC ((IF (## 4)
               LAZY
               ((4)
                (IF (ATOMEXP (## 2))
                    ((1 ASSOC))
                    NIL)))))
  (SET (LAZY))
  (SETQ (3 DOTHIS))
  (SORT ((E (QUOTE (SORT is DESTRUCTIVE in INTERLISP - may need to 
                         recode)))
         TTY:))
  (SPEAK (LAZY))
  (SPECIAL (LAZY))
  (STOREATOM (LAZY))
  (STORECHAR (LAZY))
  (STOREEVAL (LAZY))
  (STORELIST (LAZY))
  (SUB1 (2 DOTHIS 0 (IF (INTEXP (## 2))
                        NIL
                        ((1 PLUS -1)))))
  (SUBLIS ((N T)))
  (SUBST15 ((1 SUBST)))
  (THOSE ((1 SUBSET)))
  (TIMES ((NTH 2)
          DOTHESE !0 (IF (EVERY (CDR (##))
                                (FUNCTION INTEXP))
                         ((1 ITIMES))
                         NIL)))
  (TIMETOT (LAZY))
  (TRACE (LAZY))
  (TTAB ((1 TAB)))
  (UNCOMMON ((1 UNSPECIAL)
             DOTHIS))
  (UNMACRO (LAZY))
  (UNSPECIAL (LAZY))
  (UNTRACE (LAZY))
  (VERBOS (LAZY))
  (WRS ((1 OUTPUT)))
  (XTAB ((1 SPACES)))
  (ZEROP (2 DOTHIS 0 (IF (SMALLEXP (## 2))
                         NIL
                         ((1 EQP 0)))))
  ({ (STOP))
  (} (LAZY))
))(QUOTE XFORM))

  (COND ((EQ (EVALV (QUOTE MERGE))
             T)
         (RPAQ TRANSFORMATIONS (UNION TRANSFORMATIONS
                                      (LISTP (GETP (QUOTE 
                                                    TRANSFORMATIONS)
                                                   (QUOTE VALUE)))))
         (MAPC (GETP (QUOTE USERNOTES)
                     (QUOTE VALUE))
               (FUNCTION (LAMBDA (NOTE)
                                 (OR (ASSOC (CAR NOTE)
                                            USERNOTES)
                                     (SETQ USERNOTES (CONS NOTE 
                                                          USERNOTES)))))
               ))
        (T (MAPC (GETP (QUOTE TRANSFORMATIONS)
                       (QUOTE VALUE))
                 (FUNCTION (LAMBDA (X)
                                   (AND (NOT (MEMB X TRANSFORMATONS))
                                        (/REMPROP X (QUOTE XFORM))))))))
  (ADDTOVAR USERMACROS
            (EXPANDMACS
              NIL
              (LPQ (ORF @ COMMENT ALIST OBLIST)
                   1
                   (IF (EQ (##)
                           (QUOTE @))
                       (UP (I 2 (@1 (## 2)))
                           (1))
                       ((IF (MEMB (##)
                                  (QUOTE (ALIST OBLIST)))
                            (LAZY)
                            ((REMFIX ?)))))))
            (NO NIL (REMARK LAZY)
                OK)
            (REMFIX (NOTE)
                    (E (OR (CDADR (ASSOC (QUOTE NOTE)
                                         USERNOTES))
                           (QUOTE (???? NOTE))))
                    TTY:)
            (LAZY NIL (REMFIX FIXIT))
            (REM NIL (-1 *))
            (LAZY NIL
                  (E (QUOTE (No transformation - fix this by hand!)))
                  TTY:))
  (ADDTOVAR EDITCOMSA LAZY REM LAZY NO EXPANDMACS)
  (ADDTOVAR EDITCOMSL REMFIX)
  (OR (GETD (QUOTE TRANSOR))
      (LOAD (OR (INFILEP (QUOTE <NEWLISP>TRANSOR.COM))
                (INFILEP (QUOTE <LISP>TRANSOR.COM)))))
(DEFLIST(QUOTE(
  (UREAD
    (NIL
      (BEFORE
        NIL
        (RETURN
          (PROG
            (X)
            LP
            (SELECTQ
              (CAR (SETQ X (NLSETQ (READ U))))
              ((EXITERR RESTORE OPEN CLOSE OPTIMIZE BPSMOVE FIXDEFINE)
               (RETURN (CONS (QUOTE COMMENT)
                             (CONS (CAR X)
                                   (READ U)))))
              (NIL
                (COND
                  ((NULL X)
                   (* END OF FILE)
                   (COND
                     ((EQ (CAR FILEVARS)
                          T)
                      (ERROR!))
                     (T
                       (RETURN
                         (PROG1
                           (CONS
                             (QUOTE PROGN)
                             (CONS
                               (LIST (QUOTE SETQ)
                                     FILEVARS
                                     (KWOTE (CAR FILEVARS)))
                               (CONS
                                 (LIST (QUOTE SETQ)
                                       FILEFNS
                                       (KWOTE (CAR FILEFNS)))
                                 (AND
                                   (CAR FILESPECVARS)
                                   (LIST (LIST (QUOTE SETQ)
                                               FILESPECVARS
                                               (KWOTE (CAR FILESPECVARS)
                                                      )))))))
                           (RPLACA FILEVARS T))))))
                  (T (GO LP))))
              (COMMENT (RETURN (CONS (CAR X)
                                     (READ U))))
              (PUTPROP (SET FILEVARS
                            (CONS (LIST (QUOTE PROP)
                                        (CADDR (SETQ X (READ U)))
                                        (CAR X))
                                  (CAR FILEVARS)))
                       (RETURN (CONS (QUOTE PUTPROP)
                                     (MAPCAR X (QUOTE KWOTE)))))
              (DEFINE (SETQ X (READ U))
                      (SET FILEFNS
                           (NCONC FILEFNS
                                  (MAPCAR (SETQ X (CAR X))
                                          (FUNCTION CAR))))
                      (RETURN (LIST (QUOTE DEFINE)
                                    (KWOTE X))))
              (CHKPOINT (HELP))
              (SPECIAL (SET FILESPECVARS (NCONC (CAR FILESPECVARS)
                                                (CAR (SETQ
                                                       X
                                                       (READ U)))))
                       (RETURN (CONS (QUOTE COMMENT)
                                     (CONS (QUOTE SPECIAL)
                                           X))))
              (HELP (QUOTE (WHAT TO DO WITH))
                    X))
            (GO LP))))))
  (TRANSOR
    (NIL
      (BEFORE
        NIL
        (PROGN
          (SETQ REMOVEFNAMEFLG (EQ (QUOTE Y)
                                   (Y/N Y "remove FNAME's?")))
          (SETQ INTEGERFLAG (SETQ SMALLINTEGERFLAG))
          (SELECTQ (Y/N ((N . o)
                         (Y . es)
                         (S . mall))
                        
            "Are all arithmatic expressions INTEGER expressions?  ")
                   (Y (SETQ INTEGERFLAG T))
                   (S (SETQ INTEGERFLAG (SETQ SMALLINTEGERFLAG T)))
                   NIL)
          (SETQ
            VALUECONTEXTFLG
            (EQ
              (Y/N
                N 

"Can one assume that the value of AND's, OR's, MEMBER's and the
like is not used (i.e. LISP 1.5 returns T while INTERLISP returns
different values? ")
              (QUOTE Y)))
          (SET (SETQ FILEVARS (FILEVARS SOURCEFILE)))
          (SET (SETQ FILEFNS (FILEFNS SOURCEFILE)))
          (SET (SETQ FILESPECVARS (PACK (LIST (NAMEFIELD SOURCEFILE)
                                              "SPECVARS"))))
          (BREAK0 (QUOTE UREAD)
                  T
                  (QUOTE (TRACE ?=
                                ((QUOTE (set up input file
                                             (i.e. do SFPTR if necc)
                                             and GO)))
                                UB)))))))
  (HELP-IN-TRANSITBLOCK ((TRANSITBLOCK . HELP)
                         (BEFORE NIL (ERROR!))))
))(QUOTE READVICE))

  (READVISE UREAD TRANSOR HELP-IN-TRANSITBLOCK)
STOP